98a8b98868f9989b30f8c2c44ca3e747ae00a4d2,org.dawnsci.conversion/src/org/dawnsci/conversion/converters/B18AverageConverter.java,B18AverageConverter,process,#IConversionContext#,50

Before Change


				Dataset I0Temp = DatasetUtils.convertToDataset(LocalServiceManager.getLoaderService().getDataset(file.getAbsolutePath(), "I0", null));
				Dataset ItTemp = DatasetUtils.convertToDataset(LocalServiceManager.getLoaderService().getDataset(file.getAbsolutePath(), "It", null));
				Dataset IrefTemp = DatasetUtils.convertToDataset(LocalServiceManager.getLoaderService().getDataset(file.getAbsolutePath(), "Iref", null));
				Dataset lnI0ItTemp = DatasetUtils.convertToDataset(LocalServiceManager.getLoaderService().getDataset(file.getAbsolutePath(), "lnI0It", null));
				Dataset lnItIrefTemp = DatasetUtils.convertToDataset(LocalServiceManager.getLoaderService().getDataset(file.getAbsolutePath(), "lnItIref", null));
				Dataset QexafsFFI0Temp = DatasetUtils.convertToDataset(LocalServiceManager.getLoaderService().getDataset(file.getAbsolutePath(), "QexafsFFI0", null));
				if (file == files.get(0)) {
					// first file

After Change


			B18AverageAsciiData data = new B18AverageAsciiData();
			
			//in case all files do not have the same number of rows, use the minimal number of rows
			int nrows_min = Integer.MAX_VALUE;
			int nrows_max = Integer.MIN_VALUE;
			for (File file : files) {
				//get the number of elements in the energy array
				int irows = LocalServiceManager.getLoaderService().getDataset(file.getAbsolutePath(), "qexafs_energy", null).getSize();
				nrows_min = Math.min(nrows_min, irows);
				nrows_max = Math.max(nrows_max, irows);
			}
			
			if (nrows_min != nrows_max) {
				logger.warn("files in group do not have the same number of rows: calculating averages on minimum number of rows");
			}
			
			data.qexafs_energy = DatasetUtils.convertToDataset(LocalServiceManager.getLoaderService().getDataset(files.get(0).getAbsolutePath(), "qexafs_energy", null).getSlice(null, new int[]{nrows_min}, null));
			
			for (File file : files) {
				Dataset timeTemp = DatasetUtils.convertToDataset(LocalServiceManager.getLoaderService().getDataset(file.getAbsolutePath(), "time", null).getSlice(null, new int[]{nrows_min}, null));
				Dataset I0Temp = DatasetUtils.convertToDataset(LocalServiceManager.getLoaderService().getDataset(file.getAbsolutePath(), "I0", null).getSlice(null, new int[]{nrows_min}, null));
				Dataset ItTemp = DatasetUtils.convertToDataset(LocalServiceManager.getLoaderService().getDataset(file.getAbsolutePath(), "It", null).getSlice(null, new int[]{nrows_min}, null));
				Dataset IrefTemp = DatasetUtils.convertToDataset(LocalServiceManager.getLoaderService().getDataset(file.getAbsolutePath(), "Iref", null).getSlice(null, new int[]{nrows_min}, null));
				Dataset lnI0ItTemp = DatasetUtils.convertToDataset(LocalServiceManager.getLoaderService().getDataset(file.getAbsolutePath(), "lnI0It", null).getSlice(null, new int[]{nrows_min}, null));
				Dataset lnItIrefTemp = DatasetUtils.convertToDataset(LocalServiceManager.getLoaderService().getDataset(file.getAbsolutePath(), "lnItIref", null).getSlice(null, new int[]{nrows_min}, null));
				Dataset QexafsFFI0Temp = DatasetUtils.convertToDataset(LocalServiceManager.getLoaderService().getDataset(file.getAbsolutePath(), "QexafsFFI0", null).getSlice(null, new int[]{nrows_min}, null));
				if (file == files.get(0)) {
					// first file